home *** CD-ROM | disk | FTP | other *** search
- // to convert any files into PowerD compatible files
- // 1.0 (21.11.2001) initial release
- // 1.1 (29.4.2002) DMX: added Delay(1) to free some cpu time, recompiled
-
- MODULE 'exec/memory','reqtools','libraries/reqtools','intuition/intuition'
-
- OPT OSVERSION=37,OPTIMIZE
- ENUM SOURCE
-
- DEF ReqToolsBase=NIL
-
- PROC main()
- DEF myargs:PTR TO LONG,rdargs=NIL,str[256]:STRING
- DEF vers='$VER: x2d v1.1 by MarK and DMX (29.4.2002)'
- myargs:=[NIL,NIL]
- IFN ReqToolsBase:=OpenLibrary('reqtools.library',37) THEN Raise("RTLI")
- IFN rdargs:=ReadArgs('SOURCE',myargs,NIL) THEN Raise("DOS")
- EStrCopy(str,IF myargs[0] THEN myargs[0] ELSE FileReq(str))
-
- DEF filetype
- IF StrCmp(str+EStrLen(str)-3,'.fd')
- filetype:="fd"
- ELSEIF StrCmp(str+EStrLen(str)-2,'.h')
- filetype:="h"
- ELSE
- filetype:=NIL
- ENDIF
-
- DEF command[256]:STRING
- SELECT filetype
- CASE "fd"; PrintF('FileType: \s\n','fd file')
- PrintF('Converting to PowerD compatible module...\n')
- StringF(command,'fd2m "\s"',str)
- Execute(command,NIL,NIL)
- PrintF('Compiling the ascii module and generating ppc interface...\n')
- IF StrCmp(str+StrLen(str)-3,'.fd') THEN str[StrLen(str)-3]:="\0"
- IF StrCmp(str+StrLen(str)-4,'_lib')
- str[StrLen(str)-4]:="\0"
- StrAdd(str,'.m')
- ENDIF
- StringF(command,'dc "\s" lg t:library',str)
- Execute(command,NIL,NIL)
- PrintF('Generating linklib file...\n')
- CompileAll('t:library')
- str[StrLen(str)-2]:="\0"
- StringF(command,'join t:library/#?.o as "\sbase.lib"',str)
- Execute(command,NIL,NIL)
- Execute('delete t:library all quiet force',NIL,NIL)
- IF 1=request('Copy generated files into the PowerD subdirectories?','_Yes|_No')
- StringF(command,'copy "\s.m" "\s.b" to dmodules: quiet',str,str)
- Execute(command,NIL,NIL)
- StringF(command,'copy "\sbase.lib" to d:lib/modules quiet',str)
- Execute(command,NIL,NIL)
- ENDIF
- CASE "h"; PrintF('FileType: \s\n','c header file')
- DEFAULT; PrintF('FileType: \s\n','unknown')
- ENDSELECT
- PrintF('Done. \n')
-
- EXCEPTDO
- IF rdargs THEN FreeArgs(rdargs)
- IF ReqToolsBase THEN CloseLibrary(ReqToolsBase)
- ENDPROC
-
- PROC FileReq(nm:PTR TO CHAR)(PTR)
- DEF name[256]:STRING,
- requestedname[256]:STRING,
- r:PTR TO rtFileRequester
- IF r:=rtAllocRequestA(RTPREF_FILEREQ,NIL)
- rtChangeReqAttr(r,
- RTFI_MatchPat,'#?',
- TAG_END)
- IF rtFileRequest(r,name,'Select a file:',
- RT_ReqPos,REQPOS_CENTERSCR,
- RTFI_Flags,FREQF_PATGAD,
- RTFI_OKText,'_Load',
- RT_Underscore,"_",
- TAG_END)
- EStrCopy(requestedname,r.Dir)
- AddPart(requestedname,name,255)
- ReEStr(requestedname)
- EStrCopy(nm,requestedname)
- ENDIF
- rtFreeRequest(r)
- ENDIF
- ENDPROC nm
-
- MODULE 'dos/dos'
-
- PROC CompileAll(dir:PTR TO UBYTE)
- DEF info:FileInfoBlock,lock,count=0,command[256]:STRING,n=0
- IF lock:=Lock(dir,-2)
- IF Examine(lock,info)
- IF info.DirEntryType>0
- WHILE ExNext(lock,info) DO count++
- ELSE PrintFault(IOErr(),'ddir')
- ELSE PrintFault(IOErr(),'ddir')
- IF Examine(lock,info)
- IF info.DirEntryType>0
- WHILE ExNext(lock,info)
- StringF(command,'pasm -F 2 "\s/\s"',dir,info.FileName)
- Execute(command,NIL,NIL)
- Delay(1)
- n++
- PrintF(' \d/\d\b',n,count)
- ENDWHILE
- ELSE PrintFault(IOErr(),'ddir')
- ELSE PrintFault(IOErr(),'ddir')
- UnLock(lock)
- ELSE PrintFault(IOErr(),'ddir')
- ENDPROC
-
- PROC request(body,gadgets=NIL,args=NIL)(LONG)
- IF gadgets=NIL THEN gadgets:='_Continue'
- IFN ReqToolsBase
- RETURN EasyRequestArgs(0,[SIZEOF_EasyStruct,0,'RayDream message:',body,gadgets]:EasyStruct,0,args)
- ELSE
- RETURN rtEZRequest(body,gadgets,NIL,args,
- RT_Underscore,"_",
- RT_ReqPos,REQPOS_CENTERSCR,
- RTEZ_ReqTitle,'Message:',
- TAG_END)
- ENDIF
- ENDPROC
-